{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Simple Reinforcement Learning with Tensorflow: Part 0 - Q-Networks\n",
    "In this iPython notebook we implement a Q-Network algorithm that solves the FrozenLake problem. To learn more, read here: https://medium.com/@awjuliani/simple-reinforcement-learning-with-tensorflow-part-0-q-learning-with-tables-and-neural-networks-d195264329d0\n",
    "\n",
    "For more reinforcment learning tutorials, see:\n",
    "https://github.com/awjuliani/DeepRL-Agents"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from __future__ import division\n",
    "\n",
    "import gym\n",
    "import numpy as np\n",
    "import random\n",
    "import tensorflow as tf\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Load the environment"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false,
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[2017-03-09 18:45:29,847] Making new env: FrozenLake-v0\n"
     ]
    }
   ],
   "source": [
    "env = gym.make('FrozenLake-v0')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## The Q-Network Approach"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Implementing the network itself"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "tf.reset_default_graph()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "#These lines establish the feed-forward part of the network used to choose actions\n",
    "inputs1 = tf.placeholder(shape=[1,16],dtype=tf.float32)\n",
    "W = tf.Variable(tf.random_uniform([16,4],0,0.01))\n",
    "Qout = tf.matmul(inputs1,W)\n",
    "predict = tf.argmax(Qout,1)\n",
    "\n",
    "#Below we obtain the loss by taking the sum of squares difference between the target and prediction Q values.\n",
    "nextQ = tf.placeholder(shape=[1,4],dtype=tf.float32)\n",
    "loss = tf.reduce_sum(tf.square(nextQ - Qout))\n",
    "trainer = tf.train.GradientDescentOptimizer(learning_rate=0.1)\n",
    "updateModel = trainer.minimize(loss)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Training the network"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Percent of succesful episodes: 0.2685%\n"
     ]
    }
   ],
   "source": [
    "init = tf.global_variables_initializer()\n",
    "\n",
    "# Set learning parameters\n",
    "y = .99\n",
    "e = 0.1\n",
    "num_episodes = 2000\n",
    "#create lists to contain total rewards and steps per episode\n",
    "jList = []\n",
    "rList = []\n",
    "with tf.Session() as sess:\n",
    "    sess.run(init)\n",
    "    for i in range(num_episodes):\n",
    "        #Reset environment and get first new observation\n",
    "        s = env.reset()\n",
    "        rAll = 0\n",
    "        d = False\n",
    "        j = 0\n",
    "        #The Q-Network\n",
    "        while j < 99:\n",
    "            j+=1\n",
    "            #Choose an action by greedily (with e chance of random action) from the Q-network\n",
    "            a,allQ = sess.run([predict,Qout],feed_dict={inputs1:np.identity(16)[s:s+1]})\n",
    "            if np.random.rand(1) < e:\n",
    "                a[0] = env.action_space.sample()\n",
    "            #Get new state and reward from environment\n",
    "            s1,r,d,_ = env.step(a[0])\n",
    "            #Obtain the Q' values by feeding the new state through our network\n",
    "            Q1 = sess.run(Qout,feed_dict={inputs1:np.identity(16)[s1:s1+1]})\n",
    "            #Obtain maxQ' and set our target value for chosen action.\n",
    "            maxQ1 = np.max(Q1)\n",
    "            targetQ = allQ\n",
    "            targetQ[0,a[0]] = r + y*maxQ1\n",
    "            #Train our network using target and predicted Q values\n",
    "            _,W1 = sess.run([updateModel,W],feed_dict={inputs1:np.identity(16)[s:s+1],nextQ:targetQ})\n",
    "            rAll += r\n",
    "            s = s1\n",
    "            if d == True:\n",
    "                #Reduce chance of random action as we train the model.\n",
    "                e = 1./((i/50) + 10)\n",
    "                break\n",
    "        jList.append(j)\n",
    "        rList.append(rAll)\n",
    "print(\"Percent of succesful episodes: \" + str(sum(rList)/num_episodes) + \"%\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Some statistics on network performance"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can see that the network beings to consistly reach the goal around the 750 episode mark."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1211d9e90>]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\ncBcRCdD/BzyrMqQv30C5AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11de39990>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(rList)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "It also begins to progress through the environment for longer than chance aroudn the 750 mark as well."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1216d8750>]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n2cwAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1212b9fd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(jList)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python [conda env:py2]",
   "language": "python",
   "name": "conda-env-py2-py"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
